import Vue from 'vue'
import Vuex from 'vuex'
import Zhang from './modules/zhangsan'
import Li from './modules/lisi'

Vue.use(Vuex)

// 使用数据
// this.$store.state
export default new Vuex.Store({
  // 定义数据
  state: {
    count: 100,
    num: 888888888,
    list: []
  },
  // 类似于.vue文件中的计算属性
  // 函数
  getters: {
    // state  vuex中state属性
    newCount({ count }) {
      // console.log('我是vuex中的计算属性')
      return count + '333'
    }
  },
  // 定义修改vuex中state数据的方法(同步来修改)   mutations  methods
  mutations: {
    // 默认参数state
    addCount(state, action) {
      // action ===  this.$store.commit的第二参数
      state.count += action.count
    },
    setList(state, action) {
      state.list = action.list
    }
  },
  // 执行异步任务   定时器   ajax   事件
  actions: {
    getList(context) {
      // context  ==>  上下文
      // context中结构 { commit }
       setTimeout(() => {
        //  this.$store
        //  修改vuex中state的数据
        // 不太正确
        // this.commit('setList', { list: [1, 2, 3, 4, 5] })
        // 正确
        context.commit('setList', { list: [1, 2, 3, 4, 5] })
        // console.log(context)
       }, 1000)
    }
  },
  // 模块区分
  modules: {
    Zhang: Zhang,
    Li: Li
  }
})
